[Fix] jsx-max-depth
: Prevent getting stuck in circular references
#2957
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2880.
What:
findJSXElementOrFragment
is getting stuck if given variable A references variable B, while variable B also references variable A (directly or via another references).How:
Before calling method recursively, check whether we have already checked references of the variable.
Test plan:
Unit tests:
previousReferences
is passed through the whole call chain, instead of just a single call.Regression:
Ran
eslint-remote-tester
in comparison mode against 500 repositories. First run caught ~86K ESLint reports. Second call (with the fix) was identical except the old crash being missing. Results: AriPerkkio#1 (comment)I had to do couple of iterations of refactoring due to node4 job failing (function default props, spread syntax,
Array.includes
).Ready to change any part of the changes if required.